import java.util.Scanner;

public class Main2 {
    // 用于追踪当前处理的字符位置
    private static int index = 0;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 读取先序遍历字符串
        while (in.hasNextLine()) {
            String preOrder = in.nextLine().trim();
            if (preOrder.isEmpty()) {
                continue;
            }

            index = 0; // 重置索引
            TreeNode root = buildTree(preOrder); // 构建二叉树
            inOrderTraversal(root); // 中序遍历并输出
            System.out.println(); // 换行
        }

        in.close();
    }

    // 根据先序遍历字符串构建二叉树
    private static TreeNode buildTree(String preOrder) {
        // 如果已到达字符串末尾或当前字符是'#'，返回空节点
        if (index >= preOrder.length() || preOrder.charAt(index) == '#') {
            index++;
            return null;
        }

        // 创建当前节点
        char val = preOrder.charAt(index);
        TreeNode node = new TreeNode(val);
        index++;

        // 递归构建左子树
        node.left = buildTree(preOrder);
        // 递归构建右子树
        node.right = buildTree(preOrder);

        return node;
    }

    // 中序遍历二叉树并输出结果
    private static void inOrderTraversal(TreeNode node) {
        if (node == null) {
            return;
        }

        // 先遍历左子树
        inOrderTraversal(node.left);
        // 再访问当前节点
        System.out.print(node.val + " ");
        // 最后遍历右子树
        inOrderTraversal(node.right);
    }
}